package app.core.thread;

import java.util.concurrent.*;

/**
 * @author Guo.Yang
 * @version 1.0
 * @date 2023/1/15 16:04
 */
public class ThreadUtil {
    private static int nThreads = 18;

    private static int max = 120;

    /**
     * 创建线程池的方法
     *
     * @return 线程池
     */
    public static ExecutorService createExecutorService() {
        /**
         * 参数1:核心线程数目
         * 参数2:最大线程数目
         * 参数3+4:临时线程运行的最大空闲时间(参数4是单位)
         * 参数5:任务队列（阻塞队列）的方式
         * 参数6:线程工厂，创建线程
         */
        return new ThreadPoolExecutor(nThreads, max,
                1000L, TimeUnit.MILLISECONDS,
                new LinkedBlockingQueue<Runnable>(),
                (ThreadFactory) Thread::new);
    }
}